package com.tensquare.jwt;

import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

/**
 * @description
 * @author: xu1
 **/
public class CreateJwt {
    public static void main(String[] args) {
        JwtBuilder jwtBuilder = Jwts.builder()
         .setId("666")//id
         .setSubject("小马")//用户名
         .setIssuedAt(new Date())//创建日期
         .signWith(SignatureAlgorithm.HS256,"itcast")//盐
         .setExpiration(new Date(new Date().getTime()+60000))//过期时间
        .claim("roles","admin"); //设置 角色 --自定义


        //创建一旦 生成 基本不变 因为 客户端是要跟着 变化的。

        //上头相当于构建字符串
        System.out.println(jwtBuilder.compact());//为了显示 输出生成的结果
//        eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI2NjYiLCJzdWIiOiLlsI_pqawiLCJpYXQiOjE1NzU5NjQxMDF9.YB5GfgvEF0jKygLfW0RkDD1p3wjRaFG1Fd8_Va0j3MQ
    }
}
//iss: jwt签发者
// sub: jwt所面向的用户
// aud: 接收jwt的一方
// exp: jwt的过期时间，这个过期时间必须要大于签发时间
// nbf: 定义在什么时间之前，该jwt都是不可用的.
// iat: jwt的签发时间
// jti: jwt的唯一身份标识，主要用来作为一次性token,从而回避重放攻击。
